package com.hera.process.config.rest.delegate;

import java.util.HashMap;
import java.util.List;

import com.hera.base.util.FiltroDTO;
import com.hera.process.config.domain.BusinessDay;
import com.hera.process.config.domain.BusinessHour;
import com.hera.process.config.domain.Calendar;
import com.hera.process.config.domain.Condition;
import com.hera.process.config.domain.Datasource;
import com.hera.process.config.domain.Department;
import com.hera.process.config.domain.Holiday;
import com.hera.process.config.domain.LoginMethod;
import com.hera.process.config.domain.Organization;
import com.hera.process.config.domain.Parameter;
import com.hera.process.config.domain.ParameterDetail;
import com.hera.process.config.domain.Secuence;
import com.hera.process.config.domain.SistVariable;
import com.hera.process.config.domain.Theme;
import com.hera.process.external.domain.AddTableDetail;
import com.hera.process.external.domain.AddTableIndex;
import com.hera.process.external.domain.AdditionalTable;
import com.hera.process.form.domain.Dynaform;
import com.hera.process.form.domain.DynaformField;
import com.hera.process.form.domain.DynaformStage;
import com.hera.process.form.domain.FieldOption;
import com.hera.process.form.domain.FormField;
//import com.hera.process.security.domain.SecGroupModule;
//import com.hera.process.security.domain.SecurityGroup;
//import com.hera.process.security.domain.User;
import com.hera.process.workflow.domain.ProcInstancHistory;
import com.hera.process.workflow.domain.ProcInstancNote;
import com.hera.process.workflow.domain.Process;
import com.hera.process.workflow.domain.ProcessCategory;
import com.hera.process.workflow.domain.ProcessGroup;
import com.hera.process.workflow.domain.ProcessGroupUser;
import com.hera.process.workflow.domain.ProcessInstance;
import com.hera.process.workflow.domain.ProcessSupervisor;
import com.hera.process.workflow.domain.Stage;
import com.hera.process.workflow.domain.StageRollup;
import com.hera.process.workflow.domain.StageUser;
import com.hera.process.workflow.domain.Swimlane;
import com.hera.process.workflow.domain.TaskInstanceCache;
import com.hera.process.workflow.domain.TaskUser;

public interface ConfigDelegate {
	
	
	
	//////////////////////BUSSINESDAY////////////////////////////////////////////////////
	public List<BusinessDay> findAllBusinessDay(FiltroDTO filtroDTO);	
	public BusinessDay createBusinessDay(BusinessDay bussinessday);
	public BusinessDay updateBusinessDay(BusinessDay bussinessday);
	public void deleteBusinessDay(BusinessDay bussinessday);
	
	//////////////////////BUSSINESHOUR////////////////////////////////////////////////////
	public List<BusinessHour> findAllBusinessHours(FiltroDTO filtroDTO);	
	public BusinessHour createBusinessHour(BusinessHour bussinesshour);
	public BusinessHour updateBusinessHour(BusinessHour bussinesshour);
	public void deleteBusinessHour(BusinessHour bussinesshour);
	
	//////////////////////CALENDAR////////////////////////////////////////////////////
	public List<Calendar> findAllCalendars(FiltroDTO filtroDTO);
	public Calendar createCalendar(Calendar calendar);
	public Calendar updatedCalendar(Calendar calendar);
	public void deleteCalendar(Calendar calendar);
	
	//////////////////////CONDITION////////////////////////////////////////////////////
	public List<Condition> findAllConditions(FiltroDTO filtroDTO);
	public Condition createCondition(Condition condition);
	public Condition updateCondition(Condition condition);
	public void deleteCondition(Condition condition);
	
	//////////////////////DATA SOURCE //////////////////////////////////////////////
	public List<Datasource> findAllDatasource(FiltroDTO filtroDTO);
	public Datasource createDatasource(Datasource datasource);
	public Datasource updateDatasource(Datasource datasource);
	public void deleteDatasource(Datasource datasource);
	
	//////////////////////DEPARTMENT //////////////////////////////////////////////
	public List<Department> findAllDepartments(FiltroDTO filtroDTO);
	public Department createDepartment(Department department);
	public Department updateDepartment(Department department);
	public void deleteDepartment(Department department);
	
	
	//////////////////////DETAILPARAMETER /////////////////////////////////////////////////
	public List<ParameterDetail> findAllParameterDetail(FiltroDTO filtroDTO);
	public ParameterDetail createParameterDetail(ParameterDetail parameterDetail);
	public ParameterDetail updateParameterDetail(ParameterDetail parameterDetail);
	public void deleteParameterDetail(ParameterDetail parameterDetail);
	public List<ParameterDetail> findParameterDetailByParameter(Parameter parameter);
	public List<ParameterDetail> findStatus();
	public List<ParameterDetail> findDays();
	public List<ParameterDetail> findMeses();
	public List<ParameterDetail> findHoras();
	public List<ParameterDetail> findMinutos();
	public List<ParameterDetail> findTipoFeriados();
	public List<ParameterDetail> findMetodosLogin();
	public List<ParameterDetail> findDetailList(ParameterDetail listsDetail);
	

	//////////////////////HOLIDAY////////////////////////////////////////
	public List<Holiday> findAllHolidays(FiltroDTO filtroDTO);
	public Holiday createHoliday(Holiday holiday);
	public Holiday updateHoliday(Holiday holiday);
	public void deleteHoliday(Holiday holiday);
	

	
	//////////////////////LOGIN METHODO //////////////////////////////////////////////
	public List<LoginMethod> findAllLoginMethods(FiltroDTO filtroDTO);
	public LoginMethod createLoginMethod(LoginMethod loginMethod);
	public LoginMethod updatedLoginMethod(LoginMethod loginMethod);
	public void deleteLoginMethod(LoginMethod loginMethod);
	
	//////////////////////ORGANIZATION////////////////////////////////////////
	public HashMap<Long,List<Department>> findDepartmenOrganization(Organization organization);
	public List<Organization> findAllOrganizations(FiltroDTO filtroDTO);
	public Organization createOrganization(Organization organization);
	public Organization updateOrganization(Organization organization);
	public void deleteOrganization(Organization organization);
	
	//////////////////////PARAMETER////////////////////////////////////////
	public List<Parameter> findAllParameter(FiltroDTO filtroDTO);
	public Parameter createParameter(Parameter parameter);
	public Parameter updateParameter(Parameter parameter);
	public void deleteParameter(Parameter parameter);
	
	
	///////////////////SECUENCE////////////////////////////////////////////
	public List<Secuence> findAllSecuences(FiltroDTO filtroDTO);
	public Secuence createSecuence(Secuence secuence);
	public Secuence updateSecuence(Secuence secuence);
	public void deleteSecuence(Secuence secuence);
	
	///////////////////SIST VARIABLE////////////////////////////////////////////
	public List<SistVariable> findAllSistVariables(FiltroDTO filtroDTO);
	public SistVariable createSistVariable(SistVariable sistvariable);
	public SistVariable updateSistVariable(SistVariable sistvariable);
	public void deleteSistVariable(SistVariable sistvariable);
	

	
	//////////////////////THEME //////////////////////////////////////////////
	public List<Theme> findAllThemes(FiltroDTO filtroDTO);
	public Theme createTheme(Theme theme);
	public Theme updatedTheme(Theme theme);
	public void deleteTheme(Theme theme);
}
